home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
011-020
/
amok11
/
r.o.m.
/
m2sources
/
mylongrealconversions.def
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
47 lines
DEFINITION MODULE MyLongRealConversions;
(*
Created: 10.02.88 by
Stefan Salewski
Stolper Weg 3
2160 Stade West-Germany
Tel: 04141/61130
Note: compiled with AMIGA Modula-2 System by AMSoft
This Module may be freely copied. But please
leave my name in. Thanks....Stefan
*)
VAR fillChar:CHAR; (* normalerweise=Leerzeichen, aber beliebig veraenderbar*)
PROCEDURE StrToReal(str:ARRAY OF CHAR;VAR x:LONGREAL;VAR error:BOOLEAN);
(* Wandelt einen String in eine LongRealZahl um.
Ziffer::=('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9')
Exponent::=('E' ['+'|'-'] Ziffer [Ziffer | Ziffer Ziffer ])
str ::={fillChar}['-'|'+'] Ziffer {Ziffer} ['.' Ziffer] {Ziffer} [Exonent]
Wenn str obiges Format hat, ist error= FALSE. x wird bei einem
Fehler nicht auf Null gesetzt, und kann trotz des Fehlers verwendet werden
Beispiel: str=' 123.-34E12' ==> x=123.0
str='-123.81E23g' ==>x=-123.81E23
*)
PROCEDURE RealToStr(x:LONGREAL;VAR str:ARRAY OF CHAR;m,n:INTEGER);
(* ABS(m) gibt die Anzahl der gueltigen Ziffern an,ABS(n) die Nachkommastellen.
n ist eingeschraenkt durch m, m wiederum durch HIGH(str).
Es sollte gelten: ABS(n) < ABS(m) < HIGH(str).
Ist m negativ, so wird die Zahl linksbuendig, sonst rechtsbuendig in
str eingetragen. Ist n negativ, so wird Exponetialdarstellung verwendet.
Der String muss mindesten 10 Zeichen gross sein (-n.mE+abc), sonst
bricht das Programm ab.
Ist die Zahl in normaler Notation zu gross fuer str, so wird die
Exponentialdarstellung gewaehlt.
Beispiel:HIGH(str)=9
x:=-123.456789 m= 6 n=2 ==> ' -123.45'
x:=-123.456789 m=-6 n=2 ==> '-123.45 '
x:=123.456789 m=-6 n=2 ==> ' 123.45 '
x:=123.456789 m=6 n=-2 ==> ' 1.2E+002'
*)
END MyLongRealConversions.def